package com.framework.workflow.service;

import com.framework.workflow.dto.NodeProperty;
import com.framework.workflow.params.NodeSettingParam;
import com.framework.workflow.vo.NodeSetting;
import org.flowable.bpmn.model.Process;

import java.util.Map;

/**
 * @author zzg
 * @date 2025-6-9 13:37
 */
public interface IPropertyService {

    /**
     * 获取下一个节点属性
     *
     * @param processDefinitionId 流程定义ID，用于唯一标识一个流程模型
     * @param taskDefKey          当前任务定义Key，用于定位流程中的具体节点
     * @param variables           流程变量，用于在流程实例中传递数据
     * @return 下一个节点的属性信息
     */
    NodeProperty getNextNodeProperty(String processDefinitionId, String taskDefKey, Map<String, Object> variables);

    /**
     * 页面弹窗获取节点属性
     * @param param 业务编号
     * @return 节点属性
     */
    NodeSetting getNodeSetting(NodeSettingParam param);

    /**
     * 获取流程定义
     * @param processDefinitionId 流程定义编号
     * @return 流程定义
     */
    Process getMainProcess(String processDefinitionId);
}
